package rysi.sma.main;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import rysi.sma.dao.DepartamentoJpaController;
import rysi.sma.dao.EstadoTicketJpaController;
import rysi.sma.dao.NivelAtencionJpaController;
import rysi.sma.dao.TicketJpaController;
import rysi.sma.dao.TopicoAyudaJpaController;
import rysi.sma.dao.UsuarioJpaController;
import rysi.sma.dao.exceptions.PreexistingEntityException;
import rysi.sma.herramientas.Globales;

/**
 *
 * @author Ivan
 */
public class Main {
    public static void main(String[] args)  throws PreexistingEntityException, Exception{
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("IvanCarrilloPU");
        
        UsuarioJpaController usuarioDAO = new UsuarioJpaController(emf);
        TicketJpaController ticketDAO = new TicketJpaController(emf);
        
        EstadoTicketJpaController estadoTicketDAO = new EstadoTicketJpaController(emf);
        NivelAtencionJpaController nivelAtencionDAO = new NivelAtencionJpaController(emf);
        DepartamentoJpaController departamentoDAO = new DepartamentoJpaController(emf);
        TopicoAyudaJpaController topicoAyudaDAO = new TopicoAyudaJpaController(emf);
        
        usuarioDAO.crearUsuario(
                Globales.TipoUsuarios.ESTUDIANTE.getId(),
                "Sinesio Ivan",
                "Carrillo",
                "Heredia",
                "ivan.carrillo@si-ti.com.mx",
                "scarrillo",
                "miPassword"
        );

        usuarioDAO.modificarUsuario(
                1,
                null,
                null,
                null,
                null,
                null,
                "miNuevoPassword"
        );
        
        ticketDAO.crearTicket(
                usuarioDAO.findUsuario(1),
                departamentoDAO.findDepartamento(2),
                topicoAyudaDAO.findTopicoAyuda(3),
                null,
                nivelAtencionDAO.findNivelAtencion(4),
                estadoTicketDAO.findEstadoTicket(2),
                null,
                "Constancia de Estudios en formato digital, via e-mail"
        );

        ticketDAO.modificarTicket(
                1,
                null,
                null,
                null,
                nivelAtencionDAO.findNivelAtencion(3),
                null,
                null,
                "Constancia de Estudios en formato digital, via e-mail (ivan.carrillo.88@gmail.com)",
                null,
                false
        );
        
        int ticketsDeptoAcademico = ticketDAO.getTicketsPorDepartamento(departamentoDAO.findDepartamento(2));
        System.out.println("Numero de Tickets del departamento Academico: " + ticketsDeptoAcademico);
    }
}
